package exception;
/**
 * throw关键字
 * 语法:
 * throw 异常实例;
 * 例如:
 * throw new RuntimeException();
 *
 * throw允许我们主动对外抛出一个异常
 * 通常下述情况我们会主动对外抛出异常:
 * 1:当前代码片段出现了异常，但是该异常不应当在当前代码片段中解决，可以对外抛出
 *   给调用者解决(属于责任制问题)
 * 2:程序可以运行，但是当前运行场景已经违背了业务设计原则，此时可以当作错误抛出给调用者
 *
 */
public class ThrowDemo {
    public static void main(String[] args) {
        Person person=new Person();
    //    person.setAge(22);
        /*
            当我们调用一个含有throws声明异常抛出的方法时，编译器会检查是否对
            该异常有处理手段，没有则编译不通过。
            处理手段有两种:
            1:使用try-catch主动捕获并处理异常
            2:在当前方法上继续使用throws对外声明该异常的抛出
            具体使用哪种取决于责任制问题
         */
        try {
            person.setAge(1000);//满足语法,不满足业务
        } catch (IllegalAgeException e) {
            e.printStackTrace();
        }
        System.out.println("年龄为:"+person.getAge());
    }
}
